/**
 * 
 */
package join.web.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import join.model.beans.Cronograma;
import join.model.beans.CronogramaActividad;
import join.model.beans.Proyecto;
import join.model.beans.ProyectoParticipante;
import join.model.repositories.CronogramaActividadRepository;
import join.model.repositories.CronogramaRepository;
import join.model.repositories.ProyectoParticipanteRepository;
import join.model.repositories.ProyectoRepository;
import join.util.AppListUtil;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

/**
 * @author Cesar Rodriguez
 *
 */

@Controller
@RequestMapping("/proyecto/{proyectoId}/cronograma/{cronogramaId}/actividad")
public class CronogramaActividadController {
	@Autowired
	ProyectoRepository proyectoRepo;
	
	@Autowired
	CronogramaRepository cronogramaRepo;
	
	@Autowired
	CronogramaActividadRepository cronogramaActividadRepo;
	
	@Autowired
	ProyectoParticipanteRepository proyectoParticipanteRepository;
	
	@RequestMapping(value = "/list", method = RequestMethod.GET)
	public ModelAndView lst(HttpServletRequest request,
			HttpServletResponse response,  @PathVariable Long proyectoId, @PathVariable Long cronogramaId) throws Exception {

		Proyecto p = proyectoRepo.findOne(proyectoId);
		Cronograma cronograma = cronogramaRepo.findOne(cronogramaId);
		List<CronogramaActividad> lp = (List<CronogramaActividad>) cronogramaActividadRepo.findByCronograma(cronogramaId);
		
		Map<String, Object> model = new HashMap<String, Object>();
		model.put("proyecto", p);
		model.put("cronograma", cronograma);
		model.put("list", lp);

		return new ModelAndView("project/proyectoCronogramaActividadLst", "model", model);
	}
	
	@RequestMapping(value = "/{cronogramaActividadId}/load", method = RequestMethod.GET)
	public ModelAndView load(ModelMap model, @PathVariable Long proyectoId, @PathVariable Long cronogramaId, @PathVariable Long cronogramaActividadId){
		Proyecto p = proyectoRepo.findOne(proyectoId);
		Cronograma cronograma = cronogramaRepo.findOne(cronogramaId);
		CronogramaActividad cronogramaActividad = cronogramaActividadRepo.findOne(cronogramaActividadId);
		
		//Objetos Principales
		model.put("proyecto", p);
		model.put("cronograma", cronograma);
		model.put("cronogramaActividad", cronogramaActividad);
				
		//Listas
		List<ProyectoParticipante> lpp = proyectoParticipanteRepository.findByProyecto(proyectoId);
		Map<String, String> mpp = new HashMap<String, String>(); 
		mpp.put("", "");
		for (ProyectoParticipante proyectoParticipante : lpp) {
			mpp.put(proyectoParticipante.getId().toString(), proyectoParticipante.getNombre());
		}
		
		model.put("lpParticipante", mpp);
		
		Map<String, String> lpu = AppListUtil.getLista("periodoUnidad");
		model.put("lpPeriodo", lpu);
		
		Map<String, String> lpe = AppListUtil.getLista("cronogramaActividadEstado");
		model.put("lpEstado", lpe);
		
		return new ModelAndView("project/proyectoCronogramaActividadAdm", "model", model);
	}
	
	@RequestMapping(value = "/save", method = RequestMethod.POST)
	public ModelAndView save(@ModelAttribute("cronogramaActividad") CronogramaActividad caNuevo, ModelMap model, HttpServletRequest request,
			HttpServletResponse response, @PathVariable Long proyectoId, @PathVariable Long cronogramaId) throws Exception{
		
		cronogramaActividadRepo.save(caNuevo);
				
		return lst(request, response, proyectoId, cronogramaId);
	}
}